package net.zjitc.logincheckcode.web;

import com.mysql.fabric.jdbc.FabricMySQLConnectionProxy;
import net.zjitc.logincheckcode.dao.UserDao;
import net.zjitc.logincheckcode.dao.UserDaoImpl;
import net.zjitc.logincheckcode.domain.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
 * @Author Administrator
 * @Date 2020/6/4 16:40
 **/
@WebServlet("/login")
public class Login extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*1.设置请求编码
        * 2.获取请求参数
        * 3.比较验证码是否一致：
        * 请求参数中获取的验证码，图片中的验证码(session)
        * 若不一致，保存错误信息，转发到jsp
        * 若一致，保存用户信息，重定向到另一页面*/
        req.setCharacterEncoding("utf-8");
        /*获取用户输入的验证码（请求参数），传入的参数是html/jsp页面中的name值*/
        String checkcode = req.getParameter("checkcode");
        /*获取session中保存的验证码*/
        HttpSession session = req.getSession();
        String session_code = (String) session.getAttribute("session_code");
        /*比较验证码是否一致（忽略大小写）*/
        if (checkcode.equalsIgnoreCase(session_code)){
            /*验证码一致
            * 1)获取用户输入的用户名和密码（请求参数）
            * 2）调用dao层方法，判断用户输入的用户名密码与数据库中保存的是否一致
            * 根据返回值，若返回的是空，表示不一致：将错误信息保存在request域，转发到登陆页面
            * 若一致，把用户信息保存在session域，重定向到另一页面*/
            /*System.out.println("验证码一致，接下来比较用户名和密码是否一致");*/
            String name = req.getParameter("name");
            String password = req.getParameter("password");
            UserDao dao=new UserDaoImpl();
            User login = dao.login(name, password);
            if (login==null){
                /*用户名密码错误*/
                req.setAttribute("error_login","用户名或密码错误");
                req.getRequestDispatcher("/logincheckcode.jsp").forward(req,resp);
            }else {
                /*用户名密码正确*/
                req.getSession().setAttribute("user",login);
                /*重定向的路径，需要加上项目路径*/
                String contextPath = req.getContextPath();
                resp.sendRedirect(contextPath+"/a.jsp");
            }
        }else {
            /*验证码不一致：
            * 1）错误信息保存request域
            * 2）转发到登陆页面（页面上去获取request域中的内容，展示出来*/
            req.setAttribute("error_login","验证码错误");
            req.getRequestDispatcher("/logincheckcode.jsp").forward(req,resp);
        }

    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }
}
